<?php

// 工程模式
// 接口中定义一些方法
// 实现接口的类实现这些方法
// 工厂类：用以实例化对象
// 优点：为系统结构提供了灵活的动态扩展机制，方便维护

interface Skill 
{
    function family();
    function buy();
}

class Person implements Skill
{
    function family()
    {
        echo '人族在辛辛苦苦的伐木<br/>';
    }

    function buy()
    {
        echo '人族在使用人民币买房子<br/>';
    }
}

class JingLing implements Skill
{
    function family()
    {
        echo '精灵在砍树<br/>';
    }

    function buy()
    {
        echo '精灵族在使用精灵比<br/>';
    }
}

class Factory
{
    static function createHero($type)
    {
        switch($type) {
            case 'person':
                return new Person();
                break;
            case 'jingling':
                return new JingLing();
                break;
        }
    }
}

// 测试
$person = Factory::createHero('person');
$jingling = Factory::createHero('jingling');